/*--------------------------------*- C++ -*----------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  dev
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
FoamFile
{
    format      ascii;
    class       dictionary;
    location    "system";
    object      blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

convertToMeters 1e-3;

geometry
{
    torus
    {
        type    triSurface;
        file    "torus.obj";
    }
}

vertices
(
    (-9.9 0 9.9)
    (-14.14 0 14.14)
    (14.14 0 14.14)
    (9.9 0 9.9)
    (9.9 0 -9.9)
    (14.14 0 -14.14)
    (-14.14 0 -14.14)
    (-9.9 0 -9.9)
    (-9.9 400 9.9)
    (-14.14 400 14.14)
    (14.14 400 14.14)
    (9.9 400 9.9)
    (9.9 400 -9.9)
    (14.14 400 -14.14)
    (-14.14 400 -14.14)
    (-9.9 400 -9.9)
    (-9.9 450.1 60)
    (-14.14 445.86 60)
    (14.14 445.86 60)
    (9.9 450.1 60)
    (9.9 469.9 60)
    (14.14 474.14 60)
    (-14.14 474.14 60)
    (-9.9 469.9 60)
    (-9.9 450.1 460)
    (-14.14 445.86 460)
    (14.14 445.86 460)
    (9.9 450.1 460)
    (9.9 469.9 460)
    (14.14 474.14 460)
    (-14.14 474.14 460)
    (-9.9 469.9 460)
);

blocks
(
    hex (0 1 2 3 8 9 10 11) (8 12 100) simpleGrading (0.35 1 1)
    hex (3 2 5 4 11 10 13 12) (8 12 100) simpleGrading (0.35 1 1)
    hex (4 5 6 7 12 13 14 15) (8 12 100) simpleGrading (0.35 1 1)
    hex (7 6 1 0 15 14 9 8) (8 12 100) simpleGrading (0.35 1 1)
    hex (0 3 4 7 8 11 12 15) (12 12 100) simpleGrading (1 1 1)
    hex (8 9 10 11 16 17 18 19) (8 12 23) simpleGrading (0.35 1 1)
    hex (11 10 13 12 19 18 21 20) (8 12 23) simpleGrading (0.35 1 1)
    hex (12 13 14 15 20 21 22 23) (8 12 23) simpleGrading (0.35 1 1)
    hex (15 14 9 8 23 22 17 16) (8 12 23) simpleGrading (0.35 1 1)
    hex (8 11 12 15 16 19 20 23) (12 12 23) simpleGrading (1 1 1)
    hex (16 17 18 19 24 25 26 27) (8 12 100) simpleGrading (0.35 1 1)
    hex (19 18 21 20 27 26 29 28) (8 12 100) simpleGrading (0.35 1 1)
    hex (20 21 22 23 28 29 30 31) (8 12 100) simpleGrading (0.35 1 1)
    hex (23 22 17 16 31 30 25 24) (8 12 100) simpleGrading (0.35 1 1)
    hex (16 19 20 23 24 27 28 31) (12 12 100) simpleGrading (1 1 1)
);

edges
(
    arc 1 2 (0 0 20)
    arc 2 5 (20 0 0)
    arc 5 6 (0 0 -20)
    arc 6 1 (-20 0 0)
    arc 0 3 (0 0 11.23)
    arc 3 4 (11.23 0 0)
    arc 4 7 (0 0 -11.23)
    arc 7 0 (-11.23 0 0)
    arc 9 10 (0 400 20)
    arc 10 13 (20 400 0)
    arc 13 14 (0 400 -20)
    arc 14 9 (-20 400 0)
    arc 8 11 (0 400 11.23)
    arc 11 12 (11.23 400 0)
    arc 12 15 (0 400 -11.23)
    arc 15 8 (-11.23 400 0)
    arc 17 18 (0 440 60)
    arc 18 21 (20 460 60)
    arc 21 22 (0 480 60)
    arc 22 17 (-20 460 60)
    arc 16 19 (0 448.77 60)
    arc 19 20 (11.23 460 60)
    arc 20 23 (0 471.23 60)
    arc 23 16 (-11.23 460 60)
    arc 25 26 (0 440 460)
    arc 26 29 (20 460 460)
    arc 29 30 (0 480 460)
    arc 30 25 (-20 460 460)
    arc 24 27 (0 448.77 460)
    arc 27 28 (11.23 460 460)
    arc 28 31 (0 471.23 460)
    arc 31 24 (-11.23 460 460)
    arc 9 17 (-14.14 432.428 27.572)
    arc 10 18 (14.14 432.428 27.572)
    arc 13 21 (14.14 452.425 7.572)
    arc 14 22 (-14.14 452.425 7.572)
    arc 8 16 (-9.9 435.426 24.574)
    arc 11 19 (9.9 435.426 24.574)
    arc 12 20 (9.9 449.427 10.573)
    arc 15 23 (-9.9 449.427 10.573)
);

faces
(
    project (9 10 18 17) torus
    project (10 13 21 18) torus
    project (13 14 22 21) torus
    project (14 9 17 22) torus
);

boundary
(
    inlet
    {
        type    patch;
        faces
        (
            (0 1 2 3)
            (3 2 5 4)
            (4 5 6 7)
            (7 6 1 0)
            (0 3 4 7)
        );
    }
    outlet
    {
        type    patch;
        faces
        (
            (24 25 26 27)
            (27 26 29 28)
            (28 29 30 31)
            (31 30 25 24)
            (24 27 28 31)
        );
    }
    walls
    {
        type    wall;
        faces
        (
            (1 9 10 2)
            (2 10 13 5)
            (5 13 14 6)
            (6 14 9 1)
            (9 17 18 10)
            (10 18 21 13)
            (13 21 22 14)
            (14 22 17 9)
            (17 25 26 18)
            (18 26 29 21)
            (21 29 30 22)
            (22 30 25 17)
        );
    }
);

// ************************************************************************* //
